YASim flap changes from Vivian Meazza
This commit is contained in:
parent
d3819c5f0c
commit
62bca8368e
7 changed files with 53 additions and 2 deletions
|
@ -206,7 +206,9 @@ void ControlMap::applyControls(float dt)
|
|||
case CASTERING:((Gear*)obj)->setCastering(lval != 0); break;
|
||||
case SLAT: ((Wing*)obj)->setSlat(lval); break;
|
||||
case FLAP0: ((Wing*)obj)->setFlap0(lval, rval); break;
|
||||
case FLAP0EFFECTIVENESS: ((Wing*)obj)->setFlap0Effectiveness(lval); break;
|
||||
case FLAP1: ((Wing*)obj)->setFlap1(lval, rval); break;
|
||||
case FLAP1EFFECTIVENESS: ((Wing*)obj)->setFlap1Effectiveness(lval); break;
|
||||
case SPOILER: ((Wing*)obj)->setSpoiler(lval, rval); break;
|
||||
case COLLECTIVE: ((Rotor*)obj)->setCollective(lval); break;
|
||||
case CYCLICAIL: ((Rotor*)obj)->setCyclicail(lval,rval); break;
|
||||
|
@ -250,6 +252,8 @@ float ControlMap::rangeMin(int type)
|
|||
case COLLECTIVE: return -1;
|
||||
case WINCHRELSPEED: return -1;
|
||||
case MAGNETOS: return 0; // [0:3]
|
||||
case FLAP0EFFECTIVENESS: return 1; // [0:10]
|
||||
case FLAP1EFFECTIVENESS: return 1; // [0:10]
|
||||
default: return 0; // [0:1]
|
||||
}
|
||||
}
|
||||
|
@ -262,6 +266,8 @@ float ControlMap::rangeMax(int type)
|
|||
case FLAP1: return 1;
|
||||
case STEER: return 1;
|
||||
case MAGNETOS: return 3; // [0:3]
|
||||
case FLAP0EFFECTIVENESS: return 10;// [0:10]
|
||||
case FLAP1EFFECTIVENESS: return 10;// [0:10]
|
||||
default: return 1; // [0:1]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,12 +13,14 @@ public:
|
|||
ADVANCE, REHEAT, PROP,
|
||||
BRAKE, STEER, EXTEND, HEXTEND, LEXTEND,
|
||||
INCIDENCE, FLAP0, FLAP1, SLAT, SPOILER, VECTOR,
|
||||
FLAP0EFFECTIVENESS, FLAP1EFFECTIVENESS,
|
||||
BOOST, CASTERING, PROPPITCH, PROPFEATHER,
|
||||
COLLECTIVE, CYCLICAIL, CYCLICELE, ROTORENGINEON,
|
||||
TILTYAW, TILTPITCH, TILTROLL,
|
||||
ROTORBRAKE, ROTORENGINEMAXRELTORQUE, ROTORRELTARGET,
|
||||
ROTORBALANCE, REVERSE_THRUST, WASTEGATE,
|
||||
WINCHRELSPEED, HITCHOPEN, PLACEWINCH, FINDAITOW};
|
||||
WINCHRELSPEED, HITCHOPEN, PLACEWINCH, FINDAITOW
|
||||
};
|
||||
|
||||
enum { OPT_SPLIT = 0x01,
|
||||
OPT_INVERT = 0x02,
|
||||
|
|
|
@ -948,7 +948,9 @@ int FGFDM::parseOutput(const char* name)
|
|||
if(eq(name, "LEXTEND")) return ControlMap::LEXTEND;
|
||||
if(eq(name, "INCIDENCE")) return ControlMap::INCIDENCE;
|
||||
if(eq(name, "FLAP0")) return ControlMap::FLAP0;
|
||||
if(eq(name, "FLAP0EFFECTIVENESS")) return ControlMap::FLAP0EFFECTIVENESS;
|
||||
if(eq(name, "FLAP1")) return ControlMap::FLAP1;
|
||||
if(eq(name, "FLAP1EFFECTIVENESS")) return ControlMap::FLAP1EFFECTIVENESS;
|
||||
if(eq(name, "SLAT")) return ControlMap::SLAT;
|
||||
if(eq(name, "SPOILER")) return ControlMap::SPOILER;
|
||||
if(eq(name, "CASTERING")) return ControlMap::CASTERING;
|
||||
|
|
|
@ -25,6 +25,7 @@ Surface::Surface()
|
|||
_slatDrag = _spoilerDrag = _flapDrag = 1;
|
||||
|
||||
_flapLift = 0;
|
||||
_flapEffectiveness = 1;
|
||||
_slatAlpha = 0;
|
||||
_spoilerLift = 1;
|
||||
_inducedDrag = 1;
|
||||
|
@ -132,6 +133,17 @@ void Surface::setFlap(float pos)
|
|||
_flapPos = pos;
|
||||
}
|
||||
|
||||
void Surface::setFlapEffectiveness(float effectiveness)
|
||||
{
|
||||
_flapEffectiveness = effectiveness;
|
||||
}
|
||||
|
||||
double Surface::getFlapEffectiveness()
|
||||
{
|
||||
return _flapEffectiveness;
|
||||
}
|
||||
|
||||
|
||||
void Surface::setSlat(float pos)
|
||||
{
|
||||
_slatPos = pos;
|
||||
|
@ -294,7 +306,8 @@ float Surface::stallFunc(float* v)
|
|||
// stall alpha
|
||||
float Surface::flapLift(float alpha)
|
||||
{
|
||||
float flapLift = _cz * _flapPos * (_flapLift-1);
|
||||
float flapLift = _cz * _flapPos * (_flapLift-1) * _flapEffectiveness;
|
||||
|
||||
if(_stalls[0] == 0)
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -34,6 +34,10 @@ public:
|
|||
void setSlat(float pos);
|
||||
void setSpoiler(float pos);
|
||||
|
||||
// Modifier for flap lift coefficient, useful for simulating flap blowing etc.
|
||||
void setFlapEffectiveness(float effectiveness);
|
||||
double getFlapEffectiveness();
|
||||
|
||||
// local -> Surface coords
|
||||
void setOrientation(float* o);
|
||||
|
||||
|
@ -88,6 +92,7 @@ private:
|
|||
float _slatDrag;
|
||||
float _flapLift;
|
||||
float _flapDrag;
|
||||
float _flapEffectiveness;
|
||||
float _spoilerLift;
|
||||
float _spoilerDrag;
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "Math.hpp"
|
||||
#include "Surface.hpp"
|
||||
#include "Wing.hpp"
|
||||
|
||||
namespace yasim {
|
||||
|
||||
Wing::Wing()
|
||||
|
@ -176,6 +177,16 @@ void Wing::setFlap0(float lval, float rval)
|
|||
}
|
||||
}
|
||||
|
||||
void Wing::setFlap0Effectiveness(float lval)
|
||||
{
|
||||
lval = Math::clamp(lval, 1, 10);
|
||||
int i;
|
||||
for(i=0; i<_flap0Surfs.size(); i++) {
|
||||
((Surface*)_flap0Surfs.get(i))->setFlapEffectiveness(lval);
|
||||
// if(_mirror) ((Surface*)_flap0Surfs.get(++i))->setFlapEffectiveness(rval);
|
||||
}
|
||||
}
|
||||
|
||||
void Wing::setFlap1(float lval, float rval)
|
||||
{
|
||||
lval = Math::clamp(lval, -1, 1);
|
||||
|
@ -187,6 +198,16 @@ void Wing::setFlap1(float lval, float rval)
|
|||
}
|
||||
}
|
||||
|
||||
void Wing::setFlap1Effectiveness(float lval)
|
||||
{
|
||||
lval = Math::clamp(lval, 1, 10);
|
||||
int i;
|
||||
for(i=0; i<_flap1Surfs.size(); i++) {
|
||||
((Surface*)_flap1Surfs.get(i))->setFlapEffectiveness(lval);
|
||||
// if(_mirror) ((Surface*)_flap1Surfs.get(++i))->setFlap(rval);
|
||||
}
|
||||
}
|
||||
|
||||
void Wing::setSpoiler(float lval, float rval)
|
||||
{
|
||||
lval = Math::clamp(lval, 0, 1);
|
||||
|
|
|
@ -42,6 +42,8 @@ public:
|
|||
void setFlap1(float lval, float rval);
|
||||
void setSpoiler(float lval, float rval);
|
||||
void setSlat(float val);
|
||||
void setFlap0Effectiveness(float lval);
|
||||
void setFlap1Effectiveness(float lval);
|
||||
|
||||
// Compile the thing into a bunch of Surface objects
|
||||
void compile();
|
||||
|
|
Loading…
Add table
Reference in a new issue